# 综合所得适用
def F1(Stax=0):
    if Stax <= 36000:
        return Stax * 0.03
    if Stax <= 144000:
        # 36000*0.03=1080
        return 1080 + (Stax - 36000) * 0.1
    if Stax <= 300000:
        # 1080+(144000-36000)*0.1=11880
        return 11880 + (Stax - 144000) * 0.2
    if Stax <= 420000:
        # 11880+(300000-144000)*0.2=43080
        return 43080 + (Stax - 300000) * 0.25
    if Stax <= 660000:
        # 43080+(420000-300000)*0.25=73080
        return 73080 + (Stax - 420000) * 0.3
    if Stax <= 960000:
        # 73080+(660000-420000)*0.3=145080
        return 145080 + (Stax - 660000) * 0.35
    # 145080+(960000-660000)*0.35=250080
    return 250080 + (Stax - 960000) * 0.45


# 年终奖适用:
# 1、单独计税：通过“年终奖应纳税所得额/12”后的数值，取税率&速算扣除数；然后用“年终奖应纳税所得额*税率-速算扣除数”，即为应纳税额
# 2、并入综合所得：（全年工资+年终奖-各项扣除、起征额）=含年终奖的应纳税所得额，按年税率表，
def F2(Sbonus=0, single=False):
    if not single:
        # 如果并入综合所得
        if Sbonus > 960000:
            rate = 0.45
            minusNum = 181920
        elif Sbonus > 660000:
            rate = 0.35
            minusNum = 85920
        elif Sbonus > 420000:
            rate = 0.3
            minusNum = 52920
        elif Sbonus > 300000:
            rate = 0.25
            minusNum = 31920
        elif Sbonus > 144000:
            rate = 0.2
            minusNum = 16920
        elif Sbonus > 36000:
            rate = 0.1
            minusNum = 2520
        else:
            rate = 0.03
            minusNum = 0
        return Sbonus * rate - minusNum
    # 如果独立计税
    bonusDivided = Sbonus / 12
    if bonusDivided > 80000:
        rate = 0.45
        minusNum = 15160
    elif bonusDivided > 55000:
        rate = 0.35
        minusNum = 7160
    elif bonusDivided > 35000:
        rate = 0.3
        minusNum = 4410
    elif bonusDivided > 25000:
        rate = 0.25
        minusNum = 2660
    elif bonusDivided > 12000:
        rate = 0.2
        minusNum = 1410
    elif bonusDivided > 3000:
        rate = 0.1
        minusNum = 210
    else:
        rate = 0.03
        minusNum = 0
    return Sbonus * rate - minusNum


# 经营所得适用
def F3(Stax=0):
    if Stax <= 30000:
        return Stax * 0.05
    if Stax <= 90000:
        # 30000*0.03=900
        return 900 + (Stax - 30000) * 0.1
    if Stax <= 300000:
        # 900+(90000-30000)*0.1=6900
        return 6900 + (Stax - 90000) * 0.2
    if Stax <= 500000:
        # 6900+(300000-90000)*0.2=48900
        return 48900 + (Stax - 300000) * 0.3
    # 48900+(500000-300000)*0.3=108900
    return 108900 + (Stax - 500000) * 0.35


# 利息、股息、红利所得、偶然所得和其他所得适用20%的税率。
def F4(Stax=0):
    return Stax * 0.2


# 分配综合所得与年终奖（独立计税），使需要缴纳的税额最低
def devideSalary(STotal):
    if STotal<60000:
        return '总收入'+str(STotal)+'元全部视为综合所得最划算，此时应纳税额为0。'
    Stax = STotal-60000
    if Stax<=36000:
        return '先分配60000元到综合所得，剩下的'+str(Stax)+'元可任意分配到综合所得或年终奖，此时应纳税额均为'+str(Stax*0.03)+'元。'
    if Stax<=36000+36000:
        return '先分配60000元到综合所得，' \
               '剩下的'+str(Stax)+'元只要保证综合所得和年终奖部分均不超过36000元即可,即总综合所得不超过96000、年终奖不超过36000，此时应纳税额均为'+str(Stax*0.03)+'元。'
    if Stax <= 144000 + 36000:
        return '综合所得为'+str(Stax - 36000+60000)+'元，年终奖为36000元时最划算，此时应纳税额为'+str((Stax-36000)*0.1-2520+1080)+'元。'
    if Stax<=203100:
        return '综合所得为'+str(Stax-36000+60000)+'元，年终奖为36000元时最划算，此时应纳税额为'+str((Stax-36000)*0.2-16920+1080)+'元。'
    if Stax<=144000+144000:
        return '综合所得为204000元，年终奖为'+str(Stax-144000)+'元时最换算，此时应纳税额为'+str(11880+(Stax-144000)*0.1-210)+'元。'
    if Stax <= 300000 + 144000:
        return '综合所得为'+str(Stax-144000+60000)+'元，年终奖为144000元时最划算，此时应纳税额为'+str((Stax-144000)*0.2-16920+14190)+'元。'
    if Stax <= 420000 + 144000:
        return '综合所得为'+str(Stax-144000+60000)+'元，年终奖为144000元时最划算，此时应纳税额为'+str((Stax-144000)*0.25-31920+14190)+'元。'
    if Stax<=672000:
        return '综合所得为'+str(Stax-144000+60000)+'元，年终奖为144000元时最划算，此时应纳税额为'+str((Stax-144000)*0.3-52920+14190)+'元。'

    if Stax<=720000:
        return '综合所得为'+str(Stax-300000+60000)+'元，年终奖为300000元时最划算，此时应纳税额为'+str((Stax-300000)*0.25-31920+58590)+'元。'
    if Stax<=960000:
        return '综合所得为'+str(Stax-300000+60000)+'元，年终奖为300000元时最划算，此时应纳税额为'+str((Stax-300000)*0.3-52920+58590)+'元。'
    if Stax<=1260000:
        return '综合所得为'+str(Stax-300000+60000)+'元，年终奖为300000元时最划算，此时应纳税额为'+str((Stax-300000)*0.35-85920+58590)+'元。'
    if Stax<=1277500:
        return '综合所得为'+str(Stax-300000+60000)+'元，年终奖为300000元时最划算，此时应纳税额为'+str((Stax-300000)*0.45-181920+58590)+'元。'
    if Stax<=1452500:
        return '综合所得为'+str(Stax-420000+60000)+'元，年终奖为420000元时最划算，此时应纳税额为'+str((Stax-420000)*0.45-181920+102340)+'元。'
    return '综合所得为'+str(Stax-660000+60000)+'元，年终奖为660000元时最划算，此时应纳税额为'+str((Stax-660000)*0.45-181920+193590)+'元。'


